/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.servlets;

import agb.Modelo.Alumno;
import agb.Modelo.Asistencias;
import agb.Modelo.Utilidades;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Inicial
 */
public class SrvAuxiliar extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
          String accion = request.getParameter("accion");
          if(accion.equalsIgnoreCase("asistenciaIndividual")){
            AsistenciaIndividual(request, response);
          }else{
            if(accion.equalsIgnoreCase("listaAlumnosAsistencia")){
                ResumenAsistencia(request, response);
            }else{
                if(accion.equalsIgnoreCase("detalleAsistenciaDocente")){
                    detalleAsistencia(request, response);
                }else{
                    if(accion.equalsIgnoreCase("calendarioAsistencia")){
                        calendarioAsistencia(request, response);
                    }
                }
            }
          }
        } finally { 
            out.close();
        }
    }

    protected void AsistenciaIndividual(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession session = request.getSession(true);
           RequestDispatcher rd;
           Vector<Asistencias> LResumen  = new Vector<Asistencias>();
            Calendar cal = GregorianCalendar.getInstance();
            String cod = request.getParameter("txtCodigo");
            int mes = Integer.parseInt(request.getParameter("cboPeriodo"));
            int anio = Integer.parseInt(request.getParameter("anio"));
            cal.set(anio, mes, 1);
            String fechaDesde =  cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
            String fechaHasta = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
      //      LResumen = Asistencias.resumenAsistenciaAlumnoPorCodigoFechaDesdeYHasta(new Utilidades().codigoPersonaPorCodigoAlumno(new Utilidades().aunmentaCeros(new StringBuffer(cod))), fechaDesde, fechaHasta);
            for(Asistencias a:LResumen){
                out.println(a.getEstado_asistencia() + " " + a.getTotal_asistencia());
            }
            String periodo = fechaDesde + " - " +fechaHasta;            
            String next = "/dinamica/auxiliar/include_consulta/rpt_asistencias_alumno.jsp";
            session.setAttribute("resumenAsistencia", LResumen);
            session.setAttribute("periodo", periodo);
            session.setAttribute("codigo", new Utilidades().codigoPersonaPorCodigoAlumno(new Utilidades().aunmentaCeros(new StringBuffer(cod))));
            rd = rd=this.getServletContext().getRequestDispatcher(next);
            rd.forward(request,response);
        } finally {
            out.close();
        }
    }

    protected void calendarioAsistencia(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            Calendar cal = GregorianCalendar.getInstance();
            String codigo = request.getParameter("txtCodigo");
            int cod = new Utilidades().codigoPersonaPorCodigoAlumno(new Utilidades().aunmentaCeros(new StringBuffer(codigo)));
            int mes = Integer.parseInt(request.getParameter("cboPeriodo"));
            int anio = Integer.parseInt(request.getParameter("anio"));
            cal.set(anio, mes, 1);
            int diaInicio =  cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) ;
            int diaFinal = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) ;
            List<Asistencias> fechasNoAsistencia = new ArrayList<Asistencias>();
            for(int i=diaInicio;i<=diaFinal;i++){
                if((Asistencias.verificaSabadoDomingo(i+"/" + (mes + 1) + "/" + anio)!=0)&& (Asistencias.verificaSabadoDomingo(i+"/" + (mes + 1) + "/" + anio)!=6)){
                    Asistencias o = new Asistencias();
                    o.setDia(""+i);
                    o.setMes(""+(mes + 1));
                    o.setAnio(""+anio);
                    if(!Asistencias.asistenciaPuntualPorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                        if(Asistencias.asistenciaTardePorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                            o.setEstado_asistencia("T");
                            fechasNoAsistencia.add(o);
                        }else{
                             if(Asistencias.asistenciaJustificacionPorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                                o.setEstado_asistencia("J");
                                fechasNoAsistencia.add(o);
                             }else{
                                o.setEstado_asistencia("F");
                                fechasNoAsistencia.add(o);
                             }
                        }
                    }else{
                        o.setEstado_asistencia("A");
                        fechasNoAsistencia.add(o);
                    }
                 }
            }

//            out.println(1 +"/" + (mes+1) + "/" + anio);
//            out.println(fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio());
//            out.println(Asistencias.verificaSabadoDomingo( 1 +"/" + (mes+1) + "/" + anio));
//            out.println(Asistencias.verificaSabadoDomingo( fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio() ));
            request.setAttribute("codigo", cod);
            request.setAttribute("periodo", diaInicio +"/" + (mes + 1) + "/" + anio + " - " + diaFinal +"/" + (mes + 1) + "/" + anio);
            request.setAttribute("inicio",Asistencias.verificaSabadoDomingo( fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio()));
            request.setAttribute("lista", fechasNoAsistencia);
            request.setAttribute("nombre", Utilidades.GradoSeccionAlumno(cod).getNombreAlumno());
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/include_consulta/rpt_asistencias_calendario.jsp").forward(request, response);

        } finally {
            out.close();
        }
    }

   protected void listaAlumnos(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
            RequestDispatcher rd;
            request.setAttribute("r_estilo", true);
            String next = "/dinamica/auxiliar/include_consulta/listaAlumnoAsistencia.jsp";
            String codigos = request.getParameter("cboAula");
            String array[] = codigos.split("-");
            out.println(array[0]);
            out.println(array[1]);
            out.println(array[2]);
            ArrayList<Alumno> LAlumnos = new ArrayList<Alumno>();
            LAlumnos = Alumno.listaAlumnosSegunAula(Integer.parseInt(array[0]), Integer.parseInt(array[1]), Integer.parseInt(array[2]));
            for(Alumno o: LAlumnos){
                out.println(o.getNombreCompleto());
            }
//            session.setAttribute("listaAlumnos", LAlumnos);
//            rd = this.getServletContext().getRequestDispatcher(next);
//            rd.forward(request,response);

        } finally {
            out.close();
        }
    }

        protected void ResumenAsistencia(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           HttpSession session = request.getSession(true);
           RequestDispatcher rd;
           Vector<Asistencias> LResumen  = new Vector<Asistencias>();
           Utilidades oUtil = new Utilidades();

            Calendar cal = GregorianCalendar.getInstance();
            int mes = Integer.parseInt(request.getParameter("cboPeriodo"));
            int anio = Integer.parseInt(request.getParameter("anio"));
            String codigos = request.getParameter("cboAula");
            String array[] = codigos.split("-");
            cal.set(anio, mes, 1);
            String fechaDesde =  cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
            String fechaHasta = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
            LResumen = Asistencias.resumenAsistenciaAulas(Integer.parseInt(array[0]), Integer.parseInt(array[1]),Integer.parseInt(array[2]),fechaDesde, fechaHasta);
            String periodo = fechaDesde + " - " +fechaHasta;
            request.setAttribute("r_estilo", true);
            oUtil = Utilidades.GradoSeccionAlumno(LResumen.get(0).getCodPersona());
            String next = "/dinamica/auxiliar/include_consulta/listaAlumnoAsistencia.jsp";
            session.setAttribute("resumenAsistencia", LResumen);
            session.setAttribute("periodo", periodo);
            session.setAttribute("infoAula", oUtil);
            rd = rd=this.getServletContext().getRequestDispatcher(next);
            rd.forward(request,response);
        } finally {
            out.close();
        }
    }

        protected void detalleAsistencia(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {          
            Calendar cal = GregorianCalendar.getInstance();
            cal.set(Integer.parseInt(request.getParameter("anio")), Integer.parseInt(request.getParameter("cboPeriodo")), 1);
            request.setAttribute("lista", new Asistencias().listaAsistenciaDocentePorCodigoFechaDesdeYHasta(Integer.parseInt(request.getParameter("cboDocente")), cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) + "/" + (Integer.parseInt(request.getParameter("cboPeriodo")) + 1) + "/" + (Integer.parseInt(request.getParameter("anio")) ), cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) + "/" + (Integer.parseInt(request.getParameter("cboPeriodo")) + 1) + "/" + (Integer.parseInt(request.getParameter("anio")) )));
            this.getServletContext().getRequestDispatcher("/dinamica/auxiliar/include_consulta/detalleAsistencia_alumno.jsp").forward(request, response);
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
